<!DOCTYPE html>
<html>
<body>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<iframe id=testIframe></iframe>
<script>
var notifyTest = async_test("Test that async event dispatch to detached frame is gracefully handled.");

function changeOrientationAndDetach() {
    // Dispatch an orientationchange event; this is handled asynchronously,
    // queueing a task/timer to do the actual dispatch.
    testRunner.setMockScreenOrientation('portrait-secondary');

    // Detach the iframe while the event dispatch is in-flight. If
    // the screen orientation controller is finalized during the
    // detach, the async event dispatch just after will be treated
    // like a no-op -- there's no controller to handle the dispatch.
    document.body.removeChild(testIframe);
    setTimeout(function () { notifyTest.done(); }, 0);
}
notifyTest.step(function () {
    // Force the creation of a ScreenOrientation and register it
    // with the controller, so that orientationchange events are sent.
    var currentType = window.screen.orientation.type;
    testIframe.src = "resources/iframe-listen-orientation-change-detach.html";
});
</script>
</body>
</html>
